package com.net.common.enums;

import com.net.common.enums.base.IntEnum;
import com.net.common.enums.base.StringEnum;

/**
 * @author  on 2017/7/10.
 * Enum工具类
 */
public class EnumUtil {

    public static <E extends Enum<E>> E getStringEnum(String value, Class<E> clazz) {
        if (!StringEnum.class.isAssignableFrom(clazz)) {
            return null;
        }

        E[] val = clazz.getEnumConstants();
        for (E v : val) {
            if (((StringEnum) v).getValue().equalsIgnoreCase(value)) {
                return v;
            }
        }
        return null;
    }

    public static <E extends Enum<E>> E getIntEnum(int value, Class<E> clazz) {
        if (!IntEnum.class.isAssignableFrom(clazz)) {
            return null;
        }

        E[] val = clazz.getEnumConstants();
        for (E v : val) {
            if (((IntEnum) v).getValue() == value) {
                return v;
            }
        }
        return null;
    }
}
